#ifndef INFERENCE_STRATEGY_HPP_GUARD
#define INFERENCE_STRATEGY_HPP_GUARD

#include "../kb/literal.hpp"

#include <vector>

namespace mashine { namespace inference {

/**
 * this class provide virtual method inference that realize logic inference 
 * strategy and might be set in KnowlegeBase class through proper
 * set method. By call KnowlegeBase::inference call set up strategy
 */
class InferenceStrategy
{
public: 
	virtual std::vector<kb::Literal> inference(std::vector<kb::Literal> const & goal) = 0;
		
	virtual ~InferenceStrategy() {};
};

}}

#endif